import { IsPositvieNumber } from '@/validates/classValidator/IsPositvieNumber';
import { ApiProperty } from '@nestjs/swagger';
import {
  IsNotEmpty,
  IsNumber,
  IsString,
  Matches,
  MaxLength,
} from 'class-validator';

export class RoleInsertDto {
  @ApiProperty({ example: 'admin' })
  @IsString({ message: '角色名称需要是字符串' })
  @MaxLength(20, { message: '角色名称不能超过10个字符' })
  @IsNotEmpty({ message: '角色名称不能为空' })
  readonly role_name: string;
}

export class RoleDelteDto {
  @ApiProperty({ example: 1 })
  // 还可以这样写错误信息
  // @IsNumber({}, { message: '参数需要是数字' })
  @IsPositvieNumber({ message: '参数需要为非0正整数' })
  @IsNotEmpty({ message: 'id不能为空' })
  readonly id: number;
}

export class RoleFindDto {
  @ApiProperty({ example: 4 })
  // @IsNumber({}, { message: 'id需要是数字' })
  // @IsNumberString({}, { message: 'id需要是数字' })
  @IsNotEmpty({ message: 'id不能为空' })
  @IsPositvieNumber({ message: '参数需要为非0正整数' })
  readonly id: number;
}
export class RoleListDto {
  /**
   *  一页显示几个
   */
  /* @Matches(/^([1-9][0-9]*){1,3}$/, {
    message: '参数需要是非0正整数或者非0正整数的字符串',
  }) */
  @IsPositvieNumber({ message: '参数需要为非0正整数' })
  @ApiProperty({ example: 2 })
  readonly pageSize: number;

 /*  @Matches(/^([1-9][0-9]*){1,3}$/, {
    message: '参数需要是非0正整数或者非0正整数的字符串',
  }) */
  @IsPositvieNumber({ message: '参数需要为非0正整数' })
  @ApiProperty({ example: 1 })
  readonly pageNumber: number;
}

export class RoleUpdateDto {
  @ApiProperty({ example: 2 })
  @IsNotEmpty({ message: 'id不能为空' })
  readonly id: number;

  @ApiProperty({ example: '管理员' })
  @IsString({ message: '角色名称需要是字符串' })
  @IsNotEmpty({ message: '角色名称不能为空' })
  readonly role_name: string;
}
